package com.im.common.utils;

import com.im.common.enums.exception.BaseErrorCode;
import com.im.common.exception.BusinessException;
import com.im.common.route.RouteInfo;

/**
 * 路由信息解析工具类
 */
public class RouteInfoParseUtil {

    /**
     * 解析包含路由信息的字符串，并返回一个 RouteInfo 对象。
     *
     * @param info 格式为 "host:port" 的包含路由信息的字符串。
     * @return 一个包含解析后的主机和端口的 RouteInfo 对象。
     * @throws BusinessException 如果输入字符串的格式不正确。
     */
    public static RouteInfo parse(String info) {
        try {
            // 使用冒号作为分隔符，将输入字符串分割成主机和端口
            String[] serverInfo = info.split(":");

            // 使用解析后的主机和端口创建一个 RouteInfo 对象
            RouteInfo routeInfo = new RouteInfo(serverInfo[0], Integer.parseInt(serverInfo[1]));

            // 返回创建的 RouteInfo 对象
            return routeInfo;
        } catch (Exception e) {
            // 如果输入字符串的格式不正确，抛出 BusinessException
            throw new BusinessException(BaseErrorCode.PARAMETER_ERROR);
        }
    }
}